package cn.jiaqiang.chatgpt.data.types.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @description chatGml 模型对象
 */
@Getter
@AllArgsConstructor
public enum ChatGLMModel {

    CHATGLM_6B_SSE("chatGLM_6b_SSE"),
    CHATGLM_LITE("chatglm_lite"),
    CHATGLM_LITE_32K("chatglm_lite_32k"),
    CHATGLM_STD("chatglm_std"),
    CHATGLM_PRO("chatglm_pro"),

    // 官方支持模型 - 2024.7.21
    GLM_4_0520("glm-4-0520"),
    GLM_4("glm-4"),
    GLM_4_ALL_TOOLS("glm-4-alltools"),
    GLM_3_TURBO("glm-3-turbo"),
    GLM_4V("glm-4v"),
    GLM_4_FLASH("glm-4-flash"),
    GLM_4_AIRX("glm-4-airx"),
    GLM_4_AIR("glm-4-air"),

    EMBEDDING_2("embedding-2"),
    CHAR_GLM_3("charglm-3"),
    CODE_GEEX_4("codegeex-4"),
    ;
    private final String code;

    public static ChatGLMModel get(String code){
        switch (code){
            case "chatGLM_6b_SSE":
                return ChatGLMModel.CHATGLM_6B_SSE;
            case "chatglm_lite":
                return ChatGLMModel.CHATGLM_LITE;
            case "chatglm_lite_32k":
                return ChatGLMModel.CHATGLM_LITE_32K;
            case "chatglm_std":
                return ChatGLMModel.CHATGLM_STD;
            case "chatglm_pro":
                return ChatGLMModel.CHATGLM_PRO;
            case "glm-4-0520":
                return ChatGLMModel.GLM_4_0520;
            case "glm-4":
                return ChatGLMModel.GLM_4;
            case "glm-4-alltools":
                return ChatGLMModel.GLM_4_ALL_TOOLS;
            case "glm-4v":
                return ChatGLMModel.GLM_4V;
            case "glm-4-flash":
                return ChatGLMModel.GLM_4_FLASH;
            case "glm-4-airx":
                return ChatGLMModel.GLM_4_AIRX;
            case "glm-4-air":
                return ChatGLMModel.GLM_4_AIR;
            case "embedding-2":
                return ChatGLMModel.EMBEDDING_2;
            case "charglm-3":
                return ChatGLMModel.CHAR_GLM_3;
            case "codegeex-4":
                return ChatGLMModel.CODE_GEEX_4;
            default:
                return ChatGLMModel.GLM_3_TURBO;
        }
    }

}
